<?php


namespace App\Http\Controllers\Api\V1;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

class BaseController extends Controller
{
    public function writeJson($error_code=0,$data=[],$msg="success",$code=200){


        return response()->json([
            'error_code'=>$error_code,
            'data'=>$data,
            'msg'=>$msg
        ],$code);
    }


    public function validateParams($params,$rule){


        $validated = Validator::make($params,$rule);
        //如果数据有问题
        if ($validated->fails()){
            // $validated->messages()的验证信息 是一个对象 用 echo 输出会报乱码
            $errorMsg = $validated->messages();

            if(!is_array($errorMsg)){
                $errorMsg =$errorMsg->toArray();
            }

            $errorArr=[];
            foreach ($errorMsg as $key=>$val){

                $errorArr[]= $key.":".$val[0];

            }
            //公司使用 throw new \exception  但报出的是个页面 不是tp 的字符串
            exit(json_encode([
                'error_code'=>999,
                'data'=>null,
                'msg'=>$errorArr


            ],256));


        }

        return $params;

    }


    /*
     * 封装原生分页
     */
    public function paginate(){

        $page =\Request::get('page')?:1; //必须是正整数

        if (!is_numeric($page) || $page<0){

          exit(json_encode([
              'error_code'=>999,
              'data'=>null,
              'msg'=>'page参数必须是正整数'

          ],256));  //256 是json 的一种中文格式
        }
        $limit=\Request::get('limit')?:15;
        if (!is_numeric($limit) || $limit<0){
            exit(json_encode([
                'error_code'=>998,
                'data'=>null,
                'msg'=>'limit参数必须是正整数'

            ],256));  //256 是json 的一种中文格式

        }
        if ($limit>100){

            $limit=100;
        }

        $offset=($page-1)*$limit;

        return [$limit,$offset];

    }


}
